package jzqb.dao;

import jzqb.bo.QBFWAuditBo;
import jzqb.bo.QBFWBo;
import jzqb.po.AdminDepartmentPo;
import jzqb.po.AdminPermissionGroupPo;
import jzqb.po.LCPo;
import jzqb.po.QBFWPo;
import jzqb.vo.QBFWVo;

import java.util.List;

/**
 * Description:
 *
 * @author BaiGe
 * @date: 2021/6/21 17:01
 * @Version 1.0
 */
public interface IQBFWDao {

    /**
     * 新建情报服务
     *
     * @param qbfwPo 情报服务实体
     * @return
     */
    Boolean insertQBFW(QBFWPo qbfwPo);

    /**
     * 查询部门领导人
     *
     * @param deptId
     * @return
     */
    AdminDepartmentPo findDeptLeader(String deptId);

    /**
     * 查询情报服务表新建数据ID
     *
     * @return
     */
    Integer getQBFWMaxId();

    /**
     * 根据部门的bolongtoSql 查询部门集合
     *
     * @param belongToSql
     * @return
     */
    List<AdminDepartmentPo> findDeptListByBelongToSqL(String belongToSql);

    /**
     * 查询情报服务
     *
     * @param qbfwBo
     * @return
     */
    List<QBFWPo> queryQBFWList(QBFWBo qbfwBo);

    /**
     * 查询待审核列表--实体
     *
     * @param qbfwAuditBo
     * @return
     */
    List<QBFWPo> showQBFWAuditList(QBFWAuditBo qbfwAuditBo);

    /**
     * 查询待审核列表--条数
     *
     * @param qbfwAuditBo
     * @return
     */
    long showQBFWAuditCount(QBFWAuditBo qbfwAuditBo);

    /**
     * 查询已审核列表--实体
     *
     * @param qbfwAuditBo
     * @return
     */
    List<QBFWPo> showHaveReadQBFWAuditList(QBFWAuditBo qbfwAuditBo);

    /**
     * 查询已审核列表--条数
     *
     * @param qbfwAuditBo
     * @return
     */
    long showHaveReadQBFWAuditCount(QBFWAuditBo qbfwAuditBo);

    /**
     * 根据情报服务id 查询三个审批流程
     *
     * @param qbfwId
     * @return
     */
    List<LCPo> getThreeLcByQBFWId(Integer qbfwId);


    /**
     * 查询情报服务-count
     *
     * @param qbfwBo
     * @return
     */
    long queryQBFWCount(QBFWBo qbfwBo);

    /**
     * 展示单条情报服务ID
     *
     * @param qbfwId
     * @return
     */
    QBFWVo showSingleQBFW(Integer qbfwId);

    /**
     * 删除情报服务-并删除该条记录携带的资源
     *
     * @param qbfwId
     * @return
     */
    Boolean delQBFWById(Integer qbfwId);

    /**
     * 修改情报服务
     *
     * @param qbfwBo
     * @return
     */
    Boolean updataQBFW(QBFWBo qbfwBo);

    /**
     * 根据部门id  查询部门名
     *
     * @param deptId
     * @return
     */
    AdminDepartmentPo findDeptNameByDeptId(String deptId);

    /**
     * 根据权限组表id  查询权限组
     *
     * @param qxzId 权限组id
     * @return
     */
    AdminPermissionGroupPo findQXZBbyQXZId(String qxzId);

    /**
     * 查询自己为部门领导人的部门
     *
     * @param leaderId
     * @return
     */
    List<AdminDepartmentPo> findDeptsByLeader(String leaderId);

    /**
     * 查询自己是否为情报部门主管
     *
     * @param departmentPo
     * @return
     */
    AdminDepartmentPo findIsQbDeptLeader(AdminDepartmentPo departmentPo);

    /**
     * 查询自己你是否为指定权限组的成员
     *
     * @param sql 组件的Sql
     * @return
     */
    AdminPermissionGroupPo findIsPermissionGroupMember(String sql);

    /**
     * 修改情报服务当前节点
     *
     * @param qbfwPo
     * @return
     */
    Boolean updateQBFWNode(QBFWPo qbfwPo);

    /**
     * 查询用户是否为该部门的领导
     *
     * @param departmentPo
     * @param
     * @return
     */
    AdminDepartmentPo findDeptByDeptIdAndLeaderId(AdminDepartmentPo departmentPo);
}
